package sortAlgorithm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * SsGoH
 *
 * @author <a href="zhaoyingling12@163.com">Zhao Simon</a>
 * @description: https://leetcode.cn/problems/SsGoHC/ 剑指 Offer II 074. 合并区间
 * @date 2023/03/08
 **/
public class SsGoH {

//    public static void main(String[] args) {
//        Solution solution = new Solution();
//        System.out.println(solution.letterCombinations("23"));
//        "23".isEmpty();
//    }

    class Solution {
        public int[][] merge(int[][] intervals) {
            Comparator<int[]> comparator = new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[0] < o2[0] ? -1 : o1[0] == o2[0] ? 0 : 1;
                }
            };

            Arrays.sort(intervals, comparator);

            int start = intervals[0][0], end = intervals[0][1];
            List<int[]> resList = new ArrayList();

            for (int i = 1; i < intervals.length; i++) {
                if (intervals[i][0] > end) {
                    resList.add(new int[]{start, end});
                    start = intervals[i][0];
                    end = intervals[i][1];
                    continue;
                }

                if (intervals[i][1] > end) {
                    end = intervals[i][1];
                }
            }
            int[][] res = new int[resList.size()][2];

            for (int i = 0; i < resList.size(); i++) {
                res[i][0] = resList.get(i)[0];
                res[i][1] = resList.get(i)[1];
            }
            return res;
        }
    }

//    private static class Solution {
//        public List<String> letterCombinations(String digits) {
//            // 建立字典表，初始化每个数字对应的字符集合
//
//            List<String> res = new ArrayList<>();
//            helper("", digits, res);
//            return res;
//        }
//
//        private void helper(String parttern, String digits, List<String> res) {
//            if ("".equals(digits) || digits.length() == 0) {
//                res.add(parttern);
//                return;
//            }
//            System.out.println("digits = " + digits);
//            String digit = digits.substring(0, 1);
//            String newDight = digits.length() == 1 ? "" : digits.substring(1, digits.length());
//            String mappingChars = getMappingChars(digit);
//            System.out.println("mappingChars = " + mappingChars);
//            for (int i = 0; i < mappingChars.length(); i++) {
//                helper(parttern + mappingChars.charAt(i), newDight, res);
//            }
//        }
//
//        private String getMappingChars(String digit) {
//            String res = "";
//            switch (digit) {
//                case "2":
//                    res = "abc";
//                    break;
//                case "3":
//                    res = "def";
//                    break;
//                case "4":
//                    res = "ghi";
//                    break;
//                case "5":
//                    res = "jkl";
//                    break;
//                case "6":
//                    res = "mno";
//                    break;
//                case "7":
//                    res = "pqrs";
//                    break;
//                case "8":
//                    res = "tuv";
//                    break;
//                case "9":
//                    res = "wxyz";
//                    break;
//                default:
//                    break;
//            }
//            return res;
//        }
//    }

}
